package com.shujia.java.day13.demo3;

import java.util.HashSet;
import java.util.Iterator;

/**
 * 比如HastSet 普通的遍历还能满足吗（for循环不行，因为没下标）这时候就有了迭代器Iterator
 * 集合中的迭代
 *  方法:  1. hasNext() 判断
 *        2. next() 获取元素 只获取集合中一个元素
 *        3.remove()(不适用)（删除）
 *
 *
 *   一次迭代没有完成之前 使用next就是获取下一级 完成之后next报错
 *   迭代完成之后，想要再次遍历，需要使用别的方式实现
 *
 */

public class IteratorTest {
    public static void main(String[] args) {
        //遍历基本数据类型
        HashSet hashSet = new HashSet();
        //添加元素 元素不重复
        hashSet.add("java");
        hashSet.add("python");
        hashSet.add("hadoop");
        hashSet.add("linux");
        hashSet.add("mysql");
        hashSet.add("shell");

        //集合中提供了iterator方法
        Iterator i = hashSet.iterator();//实现了多态 父类的引用指向子类的对象
        // 遍历:获取集合中的元素,之后进行输出
        //几个输出调用几次next方法

//        System.out.println(i.next());
//        System.out.println(i.next());
//        System.out.println(i.next());
//        System.out.println(i.next());
//        System.out.println(i.next());
//        System.out.println(i.next());
//        System.out.println(i.next());
        //判断
        /**
         *
         *         if(i.hasNext()){
         *             System.out.println(i.next());
         *         }
         *         if(i.hasNext()){
         *             System.out.println(i.next());
         *         }
         *         if(i.hasNext()){
         *             System.out.println(i.next());
         *         }
         *         if(i.hasNext()){
         *             System.out.println(i.next());
         *         }
         *         if(i.hasNext()){
         *             System.out.println(i.next());
         *         }
         *         if(i.hasNext()){
         *             System.out.println(i.next());
         *         }
         *         if(i.hasNext()){
         *             System.out.println(i.next());
         *         }
         *         if(i.hasNext()){
         *             System.out.println(i.next());
         *         }
         */

//        for (int j=0;j<hashSet.size();j++){
//            if(i.hasNext()){
//                      System.out.println(i.next());
//                  }
//        }
        // 用while比较简单
        while (i.hasNext()){
            System.out.println(i.next());
        }
        System.out.println("迭代之后使用foreach遍历:");
        for (Object o :hashSet) {
            System.out.println(o);
        }
        System.out.println("迭代之后创建新的Iterator遍历:");
        Iterator ii = hashSet.iterator();
        while (ii.hasNext()){
            System.out.println(ii.next());
        }














/**
         *
         * python
         * java
         * shell
         * linux
         * mysql
         * hadoop
         *
         * 输出结果变为  获取元素通过next(),迭代的方式来获取（一级一级往下找，找到就输出）
         *
         * python
         * java
         * shell
         * python
         * linux
         * mysql
         * hadoop
*/
    }
}
